[アップデート] AWS CodeBuild の ARM コンテナで新しいコンピュートタイプが選択出来るようになりました
いわさです。
AWS CodeBuild のビルドコンピューティング環境は複数の環境から選択することが出来ます。
その際にオペレーティングシステムや CPU アーキテクチャーの他にコンピューティングリソースの性能を選択することが出来るのですが、これまでは ARM 環境の場合は x86 と比べてかなり限られたスペックのコンピュートタイプしか選択することが出来ませんでした。
これが先日のアップデートで新たに 3 つのコンピュートタイプが追加され、x86 と遜色のない性能まで選択することが出来るようになりました。
マネジメントコンソールでの選択
アップデートの確認が出来る箇所ですが、前提として CodeBuild プロジェクトの「環境」でイメージに AArch64(ARM Architecture 64-bit)を選択します。
そうすると同じ環境構成内の「コンピューティング」でコンピュートタイプが選択出来るのですが、今回のアップデートでは次の赤枠の3つが追加されました。
後ほど API でも確認しますが、コンピュートタイプの名称としては次のようになっていて、従来のタイプの間を埋める Medium と、より大きなサイズである XLarge / 2XLarge が選択可能になりました。
コンピュートタイプ | メモリ(GB) | vCPU |
---|---|---|
Small | 4 | 2 |
Medium | 8 | 4 |
Large | 16 | 8 |
XLarge | 64 | 32 |
2XLarge | 96 | 48 |
x86 は従来と変わらずで次の 5 つが選択出来るようになっています。
x86 についても上から Small / Medium / Large / XLarge / 2XLarge です。
ちなみにメモリや vCPU 数は同じコンピュートタイプでも ARM と x86 で数値が少し異なっています。
AWS CLI で指定する
当然ながら AWS API でも対応されていますので指定が可能です。
AWS 公式ドキュメントでは ARM Small、Linux Small のような記載の分け方がされていますが、API パラメータの実体としては同じ「BUILD_GENERAL1_SMALL」になる(GPU や Windows も含めて)のでそこだけ知っておきましょう。Environment Type (ARM Container など)によって割り当てられるメモリなどは少し変わる感じになります。
CreateProject API のパラメータで指定します。
% cat hoge.json
{
"name": "hoge0806build",
"serviceRole": "arn:aws:iam::123456789012:role/service-role/codebuild-hoge0806consolebuild-service-role",
"source": {
"type": "NO_SOURCE",
"buildspec": "version: 0.2 \r\nphases:\r\n build:\r\n commands:\r\n - echo 'Hello world'\r\n"
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "ARM_CONTAINER",
"image": "aws/codebuild/amazonlinux2-aarch64-standard:3.0",
"computeType": "BUILD_GENERAL1_MEDIUM"
}
}
% aws-v1 codebuild create-project --cli-input-json file://hoge.json
{
"project": {
"name": "hoge0806build",
"arn": "arn:aws:codebuild:ap-northeast-1:123456789012:project/hoge0806build",
"source": {
"type": "NO_SOURCE",
"buildspec": "version: 0.2 \r\nphases:\r\n build:\r\n commands:\r\n - echo 'Hello world'\r\n",
"insecureSsl": false
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"cache": {
"type": "NO_CACHE"
},
"environment": {
"type": "ARM_CONTAINER",
"image": "aws/codebuild/amazonlinux2-aarch64-standard:3.0",
"computeType": "BUILD_GENERAL1_MEDIUM",
"environmentVariables": [],
"privilegedMode": false,
"imagePullCredentialsType": "CODEBUILD"
},
"serviceRole": "arn:aws:iam::123456789012:role/service-role/codebuild-hoge0806consolebuild-service-role",
"timeoutInMinutes": 60,
"queuedTimeoutInMinutes": 480,
"encryptionKey": "arn:aws:kms:ap-northeast-1:123456789012:alias/aws/s3",
"created": 1722900009.722,
"lastModified": 1722900009.722,
"badge": {
"badgeEnabled": false
},
"projectVisibility": "PRIVATE"
}
}
API ドキュメントや AWS CLI のリファレンス上では 7GB / 4 vCPU と記載されていますが ARM コンテナを指定した場合は期待どおり ARM コンピュートタイプのスペックで動作しています。
さいごに
本日は AWS CodeBuild の ARM コンテナで新しいコンピュートタイプが追加されたので少し触ってみました。
特に、コスト最適化などでビルド環境を ARM に移行するケースはたまに見ますが、移行したけどもスペック不足に悩んでいた方には嬉しいアップデートではないでしょうか。